1
Il potere dell'introspezione
AI035Lesson 15
00:00

In Ruby, il codice non è solo uno script statico—è un sistema vivente. Introspezione è il superpotere che permette agli oggetti di possedere una 'conoscenza di sé', trasformandoli da scatole nere in mappe ricercabili della funzionalità. Anche i valori immediati come gli interi possono essere interrogati sul loro pedigree e sulle loro capacità in fase di esecuzione.

1. L'interfaccia vivente

Chiamando obj.methods(regolare=true), accediamo all'intera vocabolario funzionale di un oggetto. Un semplice oggetto Range (r = 1..10) rivela un impressionante 68 metodi distinti, che riflette la sua ricca eredità da Object e dal Enumerable mix-in.

Sidebar [A]ArrayAtan2AutoLoadClasse Array < ObjectEnumerableFirma del metodo: Array#packInput: stringa modelloOutput: Stringa binaria

2. Scoperta dinamica

Il metodo respond_to? funge da guardiano in fase di esecuzione, abilitando Duck Typing. Invece di chiedere 'Chi sei?', chiediamo 'Puoi farlo?'. Questa flessibilità permette ai programmi di adattarsi alle capacità effettive, come verificare se una stringa risponde a simboli simili all'assegnazione (=) o se un valore numerico supporta una specifica query sull'ordinamento.

3. Il ponte della meta-documentazione

Strumenti come RDoc usano queste caratteristiche per generare layout di elenchi alfabetici e diagrammi blocco delle firme dei metodi automaticamente. Interrogando costanti dei moduli e variabili di istanza, gli sviluppatori possono navigare tutta la struttura dello spazio dei nomi in modo programmato, colmando il divario tra i file sorgente e l'esecuzione attiva.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>